home *** CD-ROM | disk | FTP | other *** search
/ Software USA 3 #11 / Software USA Volume 3.11.iso / mac / Games / World Builder / Ray's World Builder Demo / "Global" Code < prev    next >
Text File  |  1995-11-27  |  16KB  |  419 lines

  1. By Ray R. Dunakin III
  2.  
  3. This is the complete Global code from the game titled “Ray’s World Builder Demo.” Following it, the code is broken down into individual sections, with explanations of each section.
  4. ******************************************************
  5.  
  6. IF{TEXT$=MOVE}OR{TEXT$=PUSH}OR{TEXT$=PULL}THEN
  7.     PRINT{You can't move that.}
  8. EXIT
  9. IF{TEXT$=SEARCH}THEN
  10.     PRINT{You find nothing unusual.}
  11. EXIT
  12. IF{TEXT$=OPEN}THEN
  13.     PRINT{You can't open anything here.}
  14. EXIT
  15. IF{TEXT$=CLOSE}THEN
  16.     PRINT{You can't close anything here.}
  17. EXIT
  18. IF{TEXT$=ENTER}THEN
  19.     PRINT{You can't enter anything here.}
  20. EXIT
  21. IF{TEXT$=EXIT}THEN
  22.     PRINT{You can't exit anything here.}
  23. EXIT
  24. IF{TEXT$=UP}OR{TEXT$=CLIMB}THEN
  25.     PRINT{You can't go up here.}
  26. EXIT
  27. IF{TEXT$=DOWN}THEN
  28.     PRINT{You can't go down here.}
  29. EXIT
  30. IF{TEXT$=USE}THEN
  31.     IF{TEXT$=MATCH}THEN
  32.         IF{MATCHES>PLAYER@}THEN
  33.             PRINT{You don't have any matches.}
  34.         EXIT
  35.         IF{LAMP=PLAYER@}OR{LAMP=SCENE@}OR{LAMP.1=SCENE@}THEN
  36.             LET{L1#=1}
  37.             PRINT{The lamp is now lit, and gives off a steady light.}
  38.             IF{DARK.1=SCENE@}THEN
  39.                 MOVE{DARK.1}TO{STORAGE@}
  40.             EXIT
  41.         EXIT
  42.         PRINT{You only have a few matches left. You should save them for something more important.}
  43.     EXIT
  44.     IF{TEXT$=POTION}THEN
  45.         PRINT{You're supposed to drink it, doofus!}
  46.     EXIT
  47.     PRINT{That doesn't work.}
  48. EXIT
  49. IF{TEXT$=HIT}OR{TEXT$=BREAK}THEN
  50.     PRINT{You can't break that.}
  51. EXIT
  52. IF{TEXT$=SHOOT}THEN
  53.     PRINT{You shouldn't shoot that.}
  54. EXIT
  55. IF{TEXT$=READ}THEN
  56.     PRINT{....................................}
  57.     IF{TEXT$=CLIPPING}THEN
  58.         IF{CLIPPING=PLAYER@}THEN
  59.             MOVE{CLIPPING.2}TO{SCENE@}
  60.             PRINT{Click on the clipping when you are through reading it.}
  61.         EXIT
  62.         PRINT{You don't have the clipping.}
  63.     EXIT
  64.     PRINT{Read what?}
  65. EXIT
  66. IF{TEXT$=EAT}OR{TEXT$=TASTE}THEN
  67.     PRINT{..................................}
  68.     PRINT{Eat what?}
  69. EXIT
  70. IF{TEXT$=$}OR{TEXT$=COUNT MONEY}THEN
  71.     PRINT{..................................}
  72.     IF{CASH>PLAYER@}OR{X1#<1}THEN
  73.         PRINT{You don't have any money.}
  74.     EXIT
  75.     IF{X1#=10}THEN
  76.         PRINT{You have $10.}
  77.     EXIT
  78.     IF{X1#=9}THEN
  79.         PRINT{You have $9.}
  80.     EXIT
  81.     IF{X1#=8}THEN
  82.         PRINT{You have $8.}
  83.     EXIT
  84.     IF{X1#=7}THEN
  85.         PRINT{You have $7.}
  86.     EXIT
  87.     IF{X1#=6}THEN
  88.         PRINT{You have $6.}
  89.     EXIT
  90.     IF{X1#=5}THEN
  91.         PRINT{You have $5.}
  92.     EXIT
  93.     IF{X1#=4}THEN
  94.         PRINT{You have $4.}
  95.     EXIT
  96.     IF{X1#=3}THEN
  97.         PRINT{You have $3.}
  98.     EXIT
  99.     IF{X1#=2}THEN
  100.         PRINT{You have $2.}
  101.     EXIT
  102.     IF{X1#=1}THEN
  103.         PRINT{You have $1.}
  104.     EXIT
  105. EXIT
  106. IF{TEXT$=DRINK}THEN
  107.     PRINT{..................................}
  108.     IF{TEXT$=POTION}THEN
  109.         IF{POTION>PLAYER@}THEN
  110.             PRINT{You don't have a potion.}
  111.         EXIT
  112.         MOVE{POTION}TO{STORAGE@}
  113.         LET{PHYS.STR.BAS#=255}
  114.         LET{PHYS.STR.CUR#=255}
  115.         PRINT{You swallow the potion in one gulp, and a strange sensation comes over you. Suddenly you feel stronger than ever!}
  116.     EXIT
  117.     PRINT{Drink what?}
  118. EXIT
  119. IF{TEXT$=THANKS}OR{TEXT$=THANK YOU}THEN
  120.     PRINT{"You're welcome!"}
  121. EXIT
  122. IF{TEXT$=HAKO}THEN
  123.     PRINT{Nothing happens.}
  124. EXIT
  125. IF{TEXT$=TURN}OR{TEXT$=TWIST}THEN
  126.     PRINT{You can't turn that.}
  127. EXIT
  128. IF{TEXT$=DIG}THEN
  129.     PRINT{You can't dig here.}
  130. EXIT
  131. IF{TEXT$=INSPECT}OR{TEXT$=EXAMINE}THEN
  132.     PRINT{Click on the things you want to examine.}
  133. EXIT
  134. IF{CLICK$=LAMP}THEN
  135.     PRINT{..................................}
  136.     IF{L1#=1}THEN
  137.         PRINT{The lamp is lit.}
  138.     END
  139.     IF{L1#<1}THEN
  140.         PRINT{The lamp is not lit.}
  141.     END
  142. END
  143. IF{CLICK$=CLIPPING.2}THEN
  144.     MOVE{CLIPPING.2}TO{STORAGE@}
  145. EXIT
  146.  
  147.  
  148. ***************End of code*************************
  149.  
  150. The Global code is the place to put default responses to any of the possible actions the player can do in the game. It is also useful for code that applies to all scenes in the game, as opposed to scene code, which is operative only in one specific scene.
  151.  
  152.  
  153. The statement below prints a default response when the player tries to move, push, or pull anything not covered by scene code:
  154.  
  155. IF{TEXT$=MOVE}OR{TEXT$=PUSH}OR{TEXT$=PULL}THEN
  156.     PRINT{You can't move that.}
  157. EXIT
  158.  
  159.  
  160. This statement prints a default response whenever the player searches and the search is not handled by scene code:
  161.  
  162. IF{TEXT$=SEARCH}THEN
  163.     PRINT{You find nothing unusual.}
  164. EXIT
  165.  
  166.  
  167. This statement prints a default response when the player tries to open something that is not covered by the scene code:
  168.  
  169. IF{TEXT$=OPEN}THEN
  170.     PRINT{You can't open that.}
  171. EXIT
  172.  
  173.  
  174. This statement prints a default response when the player tries to close something that is not covered by the scene code:
  175.  
  176. IF{TEXT$=CLOSE}THEN
  177.     PRINT{You can't close that.}
  178. EXIT
  179.  
  180.  
  181. This statement prints a default response when the player tries to enter something that is not covered by the scene code:
  182.  
  183. IF{TEXT$=ENTER}THEN
  184.     PRINT{You can't enter anything here.}
  185. EXIT
  186.  
  187.  
  188. This statement prints a default response when the player tries to exit something that is not covered by the scene code:
  189.  
  190. IF{TEXT$=EXIT}THEN
  191.     PRINT{You can't exit anything here.}
  192. EXIT
  193.  
  194.  
  195. This statement prints a default response when the player enters “up” or “climb” and those command are not handled by the scene code:
  196.  
  197. IF{TEXT$=UP}OR{TEXT$=CLIMB}THEN
  198.     PRINT{You can't go up here.}
  199. EXIT
  200.  
  201.  
  202. This statement prints a default response when the player enters “down” and that command is not handled by the scene code:
  203.  
  204. IF{TEXT$=DOWN}THEN
  205.     PRINT{You can't go down here.}
  206. EXIT
  207.  
  208.  
  209. This statement prints a default response when the player enters “use” and that command are not handled by the scene code. It also includes nested statement for specific things the player wants to use, such as matches or the potion. These are items that can be used in any scene, so the Global code is a good place to handle these actions:
  210.  
  211. IF{TEXT$=USE}THEN
  212.     IF{TEXT$=MATCH}THEN
  213.         IF{MATCHES>PLAYER@}THEN
  214.             PRINT{You don't have any matches.}
  215.         EXIT
  216.         IF{LAMP=PLAYER@}OR{LAMP=SCENE@}OR{LAMP.1=SCENE@}THEN
  217.             LET{L1#=1}
  218.             PRINT{The lamp is now lit, and gives off a steady light.}
  219.             IF{DARK.1=SCENE@}THEN
  220.                 MOVE{DARK.1}TO{STORAGE@}
  221.             EXIT
  222.         EXIT
  223.         PRINT{You only have a few matches left. You should save them for something more important.}
  224.     EXIT
  225.     IF{TEXT$=POTION}THEN
  226.         PRINT{You're supposed to drink it, doofus!}
  227.     EXIT
  228.     PRINT{That doesn't work.}
  229. EXIT
  230.  
  231. >>>In the section above, the first statement tests for entry of the word “use.” The first nested statement tests for the word “match,” which also applies to “matches.” Another statement nested in that one checks to see if the player has the matches, and if not, prints text telling the player that he doesn’t have a match. If the player does have the matches, then another nested statement checks to see if the player has the lamp, or the lamp is in the scene, or the immobile object LAMP.1 is in the scene. (LAMP.1 depicts the lamp setting on the cabinet before the player takes it.) If any of these conditions is true, then L1# is set to one, and text is printed telling the player that the lamp is now lit. Finally, a statement checks to see if the object DARK.1 is in the current scene, and if so, moves it to storage so that the will be visible.
  232.  
  233. If the player does not have the lamp, and the lamp is not in the scene, and LAMP.1 is not in the scene, then the “lamp” statement is ignored, and text is printed telling the player to save his matches. 
  234.  
  235. The last nested statement tests for entry of the word “potion.” If the player tries to “use” the potion, this statement tells him to drink it.
  236.  
  237. If the nested statements are not true, they are ignored, and text is printed telling the player “That doesn’t work.” This is the default response given anytime the player tries to use something not covered by scene code.<<<
  238.  
  239.  
  240. This statement prints the default response when the player tries to hit or break something not handled by scene code:
  241.  
  242. IF{TEXT$=HIT}OR{TEXT$=BREAK}THEN
  243.     PRINT{You can't break that.}
  244. EXIT
  245.  
  246.  
  247. This statement prints the default response when the player tries to shoot something not handled by scene code:
  248.  
  249. IF{TEXT$=SHOOT}THEN
  250.     PRINT{You shouldn't shoot that.}
  251. EXIT
  252.  
  253.  
  254. This statement handles the default response for the verb “read.” A nested statement handles any entry of both “read” and “clipping.” Since the clipping is a mobile object, it can be carried and read at anytime, so the Global code is the place for this:
  255. IF{TEXT$=READ}THEN
  256.     PRINT{....................................}
  257.     IF{TEXT$=CLIPPING}THEN
  258.         IF{CLIPPING=PLAYER@}THEN
  259.             MOVE{CLIPPING.2}TO{SCENE@}
  260.             PRINT{Click on the clipping when you are through reading it.}
  261.         EXIT
  262.         PRINT{You don't have the clipping.}
  263.     EXIT
  264.     PRINT{Read what?}
  265. EXIT
  266.  
  267. >>>In the code above, if the player enters “read”, a nested statement checks to see if he has also entered “clipping.” If so, then another nested statement checks to see if the player has the clipping. If so, then a closeup drawing (CLIPPING.2} of the clipping is moved to the scene, and text is printed telling the player to click on it when finished.
  268.  
  269. If the player doesn’t have the clipping, text is printed telling him so. If “clipping” has not been entered, then the default response is printed.<<<
  270.  
  271.  
  272.  
  273. The code below handles any use of the word “eat” that is not covered by the scene code. Although this game does not contain anything for the player to eat, some code is included to show you how it is done. 
  274.  
  275. A nested statement checks to see if the word “food” has also been entered, and if so, then another statement checks to see if the player has the food. If this is also true, then the food is moved to storage and text is printed telling the player that he is no longer hungry. Normally, a variable would be used to keep track of the player’s hunger, and that variable would be decreased each time the player comes into a scene. Then, when the player eats, the variable would be increased:
  276.  
  277.  
  278. IF{TEXT$=EAT}OR{TEXT$=TASTE}THEN
  279.     PRINT{..................................}
  280.     IF{TEXT$=FOOD}THEN
  281.         IF{FOOD=PLAYER@}THEN
  282.             PRINT{The food in your pack fills your hunger.}
  283.             MOVE{FOOD}TO{STORAGE@}
  284.             LET{H1#=100}
  285.         EXIT
  286.         PRINT{You don’t have any food.}
  287.     EXIT
  288.     PRINT{Eat what?}
  289. EXIT
  290.  
  291.  
  292. In the section below, the variable X1# is used to keep track of the player’s money. Anytime the player enters a dollar sign or the word “count,” this section will print text telling the player how much money he has. A series of nested statements is used to determine the exact value of X1#, and to print the amount of the player’s money. The first nested statement checks to see if X1# is less than one, OR if the “cash” object is not in the player’s possession. If either is true, then it tells the player that he has no money:
  293.  
  294. IF{TEXT$=$}OR{TEXT$=COUNT MONEY}THEN
  295.     PRINT{..................................}
  296.     IF{CASH>PLAYER@}OR{X1#<1}THEN
  297.         PRINT{You don't have any money.}
  298.     EXIT
  299.     IF{X1#=10}THEN
  300.         PRINT{You have $10.}
  301.     EXIT
  302.     IF{X1#=9}THEN
  303.         PRINT{You have $9.}
  304.     EXIT
  305.     IF{X1#=8}THEN
  306.         PRINT{You have $8.}
  307.     EXIT
  308.     IF{X1#=7}THEN
  309.         PRINT{You have $7.}
  310.     EXIT
  311.     IF{X1#=6}THEN
  312.         PRINT{You have $6.}
  313.     EXIT
  314.     IF{X1#=5}THEN
  315.         PRINT{You have $5.}
  316.     EXIT
  317.     IF{X1#=4}THEN
  318.         PRINT{You have $4.}
  319.     EXIT
  320.     IF{X1#=3}THEN
  321.         PRINT{You have $3.}
  322.     EXIT
  323.     IF{X1#=2}THEN
  324.         PRINT{You have $2.}
  325.     EXIT
  326.     IF{X1#=1}THEN
  327.         PRINT{You have $1.}
  328.     EXIT
  329. EXIT
  330.  
  331. >>>As you can see by the example above, determining how much money the player has can use a lot of code space. That is why I usually limit the player’s money to $10. If you wish, there is another way to do this, which allows for unlimited amounts while using less space. However, it uses somewhat more awkward format:
  332. -----------Alternate Method----------------------
  333. IF{TEXT$=$}OR{TEXT$=COUNT}THEN
  334.     IF{CASH>PLAYER@}OR{X1#<1}THEN
  335.         PRINT{You have no money.}
  336.     EXIT
  337.     PRINT{You have}
  338.     PRINT{X1#}
  339.     PRINT{dollars.}
  340. EXIT
  341. ---------------------------------------------------------
  342.  
  343. >>>In this alternate method, using PRINT and enclosing  the name of the variable will cause the program to print the value of that variable, whatever it may be.<<<
  344.  
  345.  
  346.  
  347. This statement prints the default response when the player tries to drink something not handled by scene code. And the nested statement handles the player’s request to drink the potion:
  348.  
  349. IF{TEXT$=DRINK}THEN
  350.     PRINT{..................................}
  351.     IF{TEXT$=POTION}THEN
  352.         IF{POTION>PLAYER@}THEN
  353.             PRINT{You don't have a potion.}
  354.         EXIT
  355.         MOVE{POTION}TO{STORAGE@}
  356.         LET{PHYS.STR.BAS#=255}
  357.         LET{PHYS.STR.CUR#=255}
  358.         PRINT{You swallow the potion in one gulp, and a strange sensation comes over you. Suddenly you feel stronger than ever!}
  359.     EXIT
  360.     PRINT{Drink what?}
  361. EXIT
  362.  
  363. >>>In the code above, if the player enters “drink,” a nested statement checks to see if he has also entered “potion.” If so, then another statement checks to see if the player has the potion. If not, it prints some text telling him he doesn’t have it. If the player does have the potion, then the potion is moved to storage and the player’s BASE strength and CURRENT strength are increased to 255, the maximum amount. If you only increase the player’s current strength, it will be a temporary enhancement that will soon wear off, returning his strength to its previous level. By increasing the player’s base strength too, we can insure that the change will be permanent, unless some code changes it again.<<<
  364.  
  365.  
  366. This statement prints the default response when the player enters “thanks” or “thank you.” Sometimes players will do this when another creature in the game gives them something:
  367.  
  368. IF{TEXT$=THANKS}OR{TEXT$=THANK YOU}THEN
  369.     PRINT{"You're welcome!"}
  370. EXIT
  371.  
  372.  
  373. This statement prints the default response when the player enters the magic word (HAKO) if it is not handled by scene code:
  374.  
  375. IF{TEXT$=HAKO}THEN
  376.     PRINT{Nothing happens.}
  377. EXIT
  378.  
  379.  
  380. This statement prints the default response when the player tries to twist or turn something not handled by scene code:
  381.  
  382. IF{TEXT$=TURN}OR{TEXT$=TWIST}THEN
  383.     PRINT{You can't turn that.}
  384. EXIT
  385.  
  386.  
  387. This statement prints the default response when the player tries to dig in a place where it is not handled by scene code. Although this game has no places where the player is likely to try to dig, most games do, so this default should be a part of almost every game:
  388.  
  389. IF{TEXT$=DIG}THEN
  390.     PRINT{You can't dig here.}
  391. EXIT
  392.  
  393.  
  394. This statement prints the default response when the player enters “examine” or “inspect:”
  395.  
  396. IF{TEXT$=INSPECT}OR{TEXT$=EXAMINE}THEN
  397.     PRINT{Click on the things you want to examine.}
  398. EXIT
  399.  
  400.  
  401. Since the lamp object has a variable condition, meaning it can be lit or not lit, and it is a mobile object, we need some way of telling the player whether it is lit anytime the player picks it up by clicking on it. The code below handles this:
  402.  
  403. IF{CLICK$=LAMP}THEN
  404.     PRINT{..................................}
  405.     IF{L1#=1}THEN
  406.         PRINT{The lamp is lit.}
  407.     END
  408.     IF{L1#<1}THEN
  409.         PRINT{The lamp is not lit.}
  410.     END
  411. END
  412.  
  413.  
  414. When the player reads the clipping, a closeup drawing (CLIPPING.2) is moved to the scene. Since the player can read the clipping at any scene, the code to move this drawing back to storage is also in the Global code:
  415.  
  416. IF{CLICK$=CLIPPING.2}THEN
  417.     MOVE{CLIPPING.2}TO{STORAGE@}
  418. EXIT
  419.